{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "import os\n",
    "os.environ[\"OPENAI_API_BASE\"] = \"http://192.168.2.45:8000/v1\"\n",
    "os.environ[\"OPENAI_API_KEY\"] = \"xxx\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 加载大模型\n",
    "from langchain_community.chat_models import ChatOpenAI\n",
    "from langchain.schema import ChatMessage\n",
    "from langchain_core.callbacks import StreamingStdOutCallbackHandler\n",
    "llm =ChatOpenAI(temperature=0.7,verbose=True,callbacks=[StreamingStdOutCallbackHandler()],max_tokens=8000)\n",
    "import time\n",
    "res=''\n",
    "for token in llm.stream([ChatMessage(content='你可以做什么',role='user')]):\n",
    "    res+=token.content\n",
    "    print(res,flush=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\"\"TopicTopic:: ' '探讨探讨一线城市一线城市购房购房政策政策对对年轻人年轻人购房购房压力压力的影响的影响'\n",
      "\n",
      "'\n",
      "\n",
      "CCraterate_user_user11:\n",
      ":\n",
      "姓名姓名:: Alex Alex | | 兴 兴趣趣:: 房 房产产投资投资,, 财 财经经新闻新闻 | | 身 身份份:: 初 初级级白领白领 | | 购 购房房意向意向:: 短 短期期考虑考虑 | | 家 家庭庭情况情况:: 已 已婚婚，，有一个有一个小孩小孩 | | 职 职业业::  互联网互联网公司公司程序员程序员 | | 收 收入入::  1155,,000000元元//月月\n",
      "\n",
      "看法看法:: Alex Alex对对一线城市一线城市购房购房压力压力深深感感关注关注，，可能会可能会点击点击了解了解政策政策变化变化。\n",
      "。\n",
      "IsIs_click_click:: yes yes\n",
      "\n",
      "ScoreScore::  8855\n",
      "\n",
      "\n",
      "\n",
      "CCraterate_user_user22:\n",
      ":\n",
      "姓名姓名:: Lily Lily | | 兴 兴趣趣:: 家 家庭庭装饰装饰,, 生 生活活品质品质 | | 身 身份份:: 单 单身身女性女性 | | 购 购房房意向意向:: 长 长期期目标目标 | | 家 家庭庭情况情况:: 独 独居居 | | 职 职业业:: 建 建筑筑设计师设计师 | | 收 收入入::  2200,,000000元元//月月\n",
      "\n",
      "看法看法:: Lily Lily虽然虽然目前目前不不急于急于购房购房，，但但对对政策政策感兴趣感兴趣，，会会关注关注。\n",
      "。\n",
      "IsIs_click_click:: yes yes\n",
      "\n",
      "ScoreScore::  7700\n",
      "\n",
      "\n",
      "\n",
      "CCraterate_user_user33:\n",
      ":\n",
      "姓名姓名:: Bob Bob | | 兴 兴趣趣:: 投 投资资理财理财 | | 身 身份份:: 中 中层层管理者管理者 | | 购 购房房意向意向:: 等 等待待时机时机 | | 家 家庭庭情况情况:: 已 已婚婚，，无无子女子女 | | 职 职业业::  金融金融顾问顾问 | | 收 收入入::  3300,,000000元元//月月\n",
      "\n",
      "看法看法:: Bob Bob作为作为专业人士专业人士，，对对政策政策变动变动敏感敏感，，会会关注关注。\n",
      "。\n",
      "IsIs_click_click:: yes yes\n",
      "\n",
      "ScoreScore::  9900\n",
      "\n",
      "\n",
      "\n",
      "CCraterate_user_user44:\n",
      ":\n",
      "姓名姓名:: Emma Emma | | 兴 兴趣趣:: 社 社区区生活生活,, 教 教育育 | | 身 身份份:: 家 家庭庭主主妇妇 | | 购 购房房意向意向:: 子 子女女教育教育考虑考虑 | | 家 家庭庭情况情况::  有有两两套套房产房产 | | 职 职业业::  无无业业 | | 收 收入入::  丈夫丈夫收入收入为主为主\n",
      "\n",
      "看法看法:: Emma Emma虽虽已有已有房房，，但仍但仍可能可能因因子女子女教育教育关注关注此此话题话题。\n",
      "。\n",
      "IsIs_click_click:: yes yes\n",
      "\n",
      "ScoreScore::  7755\n",
      "\n",
      "\n",
      "\n",
      "CCraterate_user_user55:\n",
      ":\n",
      "姓名姓名:: Tom Tom | | 兴 兴趣趣:: 房 房产产市场市场分析分析 | | 身 身份份:: 房 房地产地产分析师分析师 | | 购 购房房意向意向:: 工 工作作需求需求 | | 家 家庭庭情况情况:: 已 已婚婚，，无无子女子女 | | 职 职业业:: 数据 数据分析师分析师 | | 收 收入入::  4400,,000000元元//月月\n",
      "\n",
      "看法看法:: Tom Tom的专业的专业领域领域使使他对他对政策政策格外格外关注关注，，必定必定会会关注关注。\n",
      "。\n",
      "IsIs_click_click:: yes yes\n",
      "\n",
      "ScoreScore::  9955\n",
      "\n",
      "\n",
      "\n",
      "CCraterate_user_user66:\n",
      ":\n",
      "姓名姓名:: Sarah Sarah | | 兴 兴趣趣::  旅行旅行,, 娱 娱乐乐 | | 身 身份份:: 蓝 蓝领领工人工人 | | 购 购房房意向意向:: 梦 梦想想 | | 家 家庭庭情况情况:: 独 独自自一人一人 | | 职 职业业:: 工 工厂厂工人工人 | | 收 收入入::  88,,000000元元//月月\n",
      "\n",
      "看法看法:: Sarah Sarah可能可能不太不太关心关心，，但但出于出于好奇好奇可能会可能会偶尔偶尔点击点击。\n",
      "。\n",
      "IsIs_click_click:: maybe maybe\n",
      "\n",
      "ScoreScore::  4400\n",
      "\n",
      "\n",
      "\n",
      "CCraterate_user_user77:\n",
      ":\n",
      "姓名姓名:: Paul Paul | | 兴 兴趣趣:: 股 股票票投资投资 | | 身 身份份::  退休退休人士人士 | | 购 购房房意向意向::  无无 | | 家 家庭庭情况情况:: 空 空巢巢老人老人 | | 职 职业业:: 原 原企业企业高管高管 | | 收 收入入:: 养 养老老金金\n",
      "\n",
      "看法看法:: Paul Paul作为作为退休退休人士人士，，对对政策政策影响影响不大不大，，可能可能不会不会主动主动点击点击。\n",
      "。\n",
      "IsIs_click_click:: no no\n",
      "\n",
      "ScoreScore::  2200\n",
      "\n",
      "\n",
      "\n",
      "CCraterate_user_user88:\n",
      ":\n",
      "姓名姓名:: Olivia Olivia | | 兴 兴趣趣:: 文 文化化活动活动,, 健 健康康生活生活 | | 身 身份份:: 自 自由由职业职业者者 | | 购 购房房意向意向:: 近 近期期计划计划 | | 家 家庭庭情况情况::  未婚未婚 | | 职 职业业:: 健 健身身教练教练 | | 收 收入入::  1122,,000000元元//月月\n",
      "\n",
      "看法看法:: Olivia Olivia虽虽购房购房在在即即，，但但兴趣兴趣可能可能不在不在房产房产政策政策上上，，点击点击意愿意愿较低较低。\n",
      "。\n",
      "IsIs_click_click:: maybe maybe\n",
      "\n",
      "ScoreScore::  5500\n",
      "\n",
      "\n",
      "\n",
      "CCraterate_user_user99:\n",
      ":\n",
      "姓名姓名:: David David | | 兴 兴趣趣::  体育体育赛事赛事,,  电影电影 | | 身 身份份:: 高 高中中生生 | | 购 购房房意向意向:: 远 远期期目标目标 | | 家 家庭庭情况情况:: 寒 寒门门学子学子 | | 职 职业业:: 学 学生生 | | 收 收入入:: 家 家庭庭资助资助\n",
      "\n",
      "看法看法:: David David关注关注点点在在学业学业上上，，可能可能不会不会主动主动点击点击。\n",
      "。\n",
      "IsIs_click_click:: no no\n",
      "\n",
      "ScoreScore::  1100\n",
      "\n",
      "\n",
      "\n",
      "CCraterate_user_user1100:\n",
      ":\n",
      "姓名姓名:: Jane Jane | | 兴 兴趣趣:: 美 美食食烹饪烹饪,, 阅 阅读读 | | 身 身份份::  企业企业高管高管 | | 购 购房房意向意向:: 配 配偶偶需求需求 | | 家 家庭庭情况情况:: 夫 夫妻妻两人两人 | | 职 职业业:: 医 医疗疗行业行业 | | 收 收入入::  5500,,000000元元//月月\n",
      "\n",
      "看法看法:: Jane Jane的职业的职业使得使得她她对对政策政策有一定有一定关注度关注度，，可能会可能会点击点击。\n",
      "。\n",
      "IsIs_click_click:: yes yes\n",
      "\n",
      "ScoreScore::  7755"
     ]
    }
   ],
   "source": [
    "#分解搜索\n",
    "from typing import List\n",
    "\n",
    "from langchain.chains import LLMChain\n",
    "from langchain_core.output_parsers import PydanticOutputParser\n",
    "from langchain_core.output_parsers.string import StrOutputParser\n",
    "from langchain_core.output_parsers.list import ListOutputParser\n",
    "from langchain.prompts import PromptTemplate,SystemMessagePromptTemplate,HumanMessagePromptTemplate,ChatPromptTemplate\n",
    "from pydantic import BaseModel, Field\n",
    "from langchain_community.chat_models import ChatOpenAI\n",
    "from langchain_core.callbacks import StreamingStdOutCallbackHandler\n",
    "from langchain_core.messages.human import HumanMessage\n",
    "from langchain_core.messages.ai import AIMessage\n",
    "systemMessage=SystemMessagePromptTemplate.from_template(template=\"\"\"我希望你可以帮我预测房产平台话题的点击率，接下来我会给你一个话题，请您生成不同的身份的用户30个，并为每个用户编写身份和兴趣和名称，购房意向，家庭情况，职业，收入，并推测每个用户是否会点击该话题，并给出一个分数。\\n 请按照以下格式来生成\n",
    "Topic: 输入的话题\n",
    "Crate_user: 编号 | 名字 | 兴趣 | 身份 | 购房意向 | 家庭情况 | 职业 | 收入\n",
    "Tink: 该角色对话题的看法 \n",
    "Is_click: 该角色是否点击该话题 （yes/no)\n",
    "Score: 该角色给出的分数 0-100 \"\"\")\n",
    "userMessage=HumanMessagePromptTemplate.from_template(template=\"\"\"\"Topic:{question}\"\"\",)\n",
    "chat_prompt=ChatPromptTemplate.from_messages([systemMessage,\n",
    "                                              userMessage])\n",
    "# template=PromptTemplate(template=\"\"\n",
    "chain=chat_prompt | llm |StrOutputParser() \n",
    "res=''\n",
    "for item in chain.stream({\"question\":\"\"}):\n",
    "    print(item, end=\"\", flush=True)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "chatglm2",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.10"
  },
  "orig_nbformat": 4
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
